import 'package:flutter/material.dart';
// import 'package:flutterdemo/navigator/page2.dart';
// import 'package:flutterdemo/navigator/page_jump_animations.dart';

class Page4 extends StatefulWidget {
  Page4({Key key}) : super(key: key);

  _Page4State createState() => _Page4State();
}

class _Page4State extends State<Page4> {
  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        // popUntil()方法的过程其实跟上面差不多，就是是少了push一个新页面的操作，只是单纯的进行移除路由操作。
        Navigator.of(context).popUntil(ModalRoute.withName("/tabNavigator"));
        return;
      },
      child: Scaffold(
        appBar: AppBar(
          title: Text('Page4'),
        ),
        body: ListView(
          children: <Widget>[
            ListTile(
              title: Text('我是Page4页面,返回/page2 ,删除先前所有路由实例'),
              onTap: () {
                // 这里的 ( Routeroute ) => false 能够确保删除先前所有路由实例。
                Navigator.of(context)
                    .pushNamedAndRemoveUntil('/page2', (Route route) => false);

                //返回路由直到遇到 '/'；
                // Navigator.of(context)
                //     .pushNamedAndRemoveUntil('/page2', ModalRoute.withName('/'));
                // 需要传参的情况
                // Navigator.pushAndRemoveUntil(
                //   context,
                //   MaterialPageRoute(
                //     builder: (BuildContext context) => new Page2(
                //           title: 'zsk',
                //         ),
                //   ),
                //   ModalRoute.withName('/'),
                // );
                // 同理
                // Navigator.pushAndRemoveUntil(
                //   context,
                //   CustomeRouter(
                //     Page2(
                //       title: 'zsk',
                //     ),
                //     type: 'rotateandscale',
                //   ),
                //   // MaterialPageRoute(
                //   //   builder: (BuildContext context) => new Page2(
                //   //         title: 'zsk',
                //   //       ),
                //   // ),
                //   (Route route) {
                //     print(route);
                //     return false;
                //   },
                // );

                //maybePop 会自动进行判断，如果当前页面pop后，会显示其他页面，不会出现问题，则将执行当前页面的pop操作
                // 否则将不执行。
                // Navigator.of(context).maybePop();

                // canPop  判断当前页面能否进行pop操作，并返回bool值
                // Navigator.of(context).canPop();

                // 直接退出当前页面
                // Navigator.of(context).pop();
              },
            ),
            FlatButton(
              // 推送 /page2路由 并删除所有路由，直到 /tabNavigator
              onPressed: () {
                Navigator.of(context).pushNamedAndRemoveUntil(
                    '/page2', ModalRoute.withName('/tabNavigator'));
              },
              child: Text(" 推送 /page2路由 并删除所有路由，直到 /tabNavigator"),
            )
          ],
        ),
      ),
    );
  }
}
